<?php
namespace jobs; 
use think\facade\Log;
use think\queue\Job;

// 消息任务
// use jobs\Que;
// use think\Queue;
// 1.创建同步任务 $res = Queue::push(Que::class,"test"); 		 添加队列
// 2.创建异步任务 $res = Queue::later(10,Que::class,"test");  添加队列 /延迟10秒执行
// 3. ## 监听任务并执行
//> php think queue:listen
//> php think queue:work --daemon（不加--daemon为执行单个任务）
// work 命令是单进程的处理模式
// listen 命令是 双进程 + 管道 的处理模式。

class Que
{
    public function fire(Job $job,$data)
    {
        Log::info("开始任务");
        if ($job->attempts() > 1) {
            Log::error("这个任务已经重试了".$job->attempts()."次");
        }
        //如果任务执行成功后 记得删除任务，不然这个任务会重复执行，直到达到最大重试次数后失败后，执行failed方法
        $job->delete();
        Log::info("删除该任务");
		
		// 重新发布任务
		// $job->release($delay); //$delay为延迟时间
    }
    public function failed()
    {
        Log::info("fail++");
        // ...任务达到最大重试次数后，失败了
    } 
 
}